<?php

class PersonType extends AppModel {

	// TODO pridat ciselnik person base type ktory rozdeli tieto typy na tiperov, klientov,
	// maklerov a ostatnych aby bolo jednoduchsie a rozsiritelnejsie vyberat dalsie typy do dropdownov
	const PT_SUPERADMIN = 1;
	const PT_ASSISTANT = 2;
	const PT_ADMIN = 3;
	const PT_BROKER = 4;
	const PT_T3 = 5;
	const PT_T2 = 6;
	const PT_T1 = 7;
	const PT_F3 = 8;
	const PT_CLIENT = 9;
	const PT_COMPANY = 10;

	var $name = 'PersonType';

	var $useTable = 'mnhis_person_type';

	protected $fields = array(
		'id' => array('name' => 'ID'),
		'title' => array('name' => 'Názov typu'),
		'top_of_structure' => array('name' => 'Vedúci skupiny', 'evaluation' => array('0' => 'nie', '1' => 'áno', 'default' => 'nie')),
		'top_of_group' => array('name' => 'TOP vrámci firemnej štruktúry', 'evaluation' => array('0' => 'nie', '1' => 'áno', 'default' => 'nie')),
		'commission_0_tipsters' => array('name' => 'Provízia pri 0 tiperoch (%)'),
		'commission_1_tipster' => array('name' => 'Provízia pri 1 tiperovi (%)'),
		'commission_2_tipsters' => array('name' => 'Provízia pri 2 tiperoch (%)'),
	);
	
	var $hasAndBelongsToMany = array(
		'Actions' => array(
			'className' => 'Action',
			'joinTable' => 'mnhis_person_type_action',
			'foreignKey' => 'fk_person_type_id',
			'associationForeignKey'  => 'fk_action_id',
			'order' => 'Actions.sorting',
		),
	);

	var $validate = array(
        'title' => array(
			'rule' => array('minLength', 1),
            'required' => TRUE,
			'message' => 'Musíte vyplniť názov',
		),
		'commission_0_tipsters' => array(
			// hranice su urcene ostrou nerovnostou, takze preto -1 < x < 101
			'rule' => array('range', -1, 101),
			'message'  => 'Provízia pri 0 tiperoch musí byť číslo medzi 0 a 100',
		),
		'commission_1_tipster' => array(
			// hranice su urcene ostrou nerovnostou, takze preto -1 < x < 101
			'rule' => array('range', -1, 101),
			'message'  => 'Provízia pri 1 tiperovi musí byť číslo medzi 0 a 100',
		),
		'commission_2_tipsters' => array(
			// hranice su urcene ostrou nerovnostou, takze preto -1 < x < 101
			'rule' => array('range', -1, 101),
			'message'  => 'Provízia pri 2 tiperoch musí byť číslo medzi 0 a 100',
		),
	);

	var $relations = array(
		'Person' => array(
			'fk_person_type_id' => array(
				'field' => 'full_name',
				'message_one' => 'Osoba: ###PLACEHOLDER### musí byť najprv zmazaná alebo priradená inému typu osoby',
				'message_more' => 'Osoby: ###PLACEHOLDER### musia byť najprv zmazané alebo priradené iným typom osôb',
			),
		),
		'Commission' => array(
			'fk_person_type_id' => array(
				'field' => 'id',
				'message_one' => 'Depozit: ###PLACEHOLDER### musí byť najprv zmazaný alebo priradený inému typu osoby',
				'message_more' => 'Depozity: ###PLACEHOLDER### musia byť najprv zmazané alebo priradené iným typom osôb',
			),
		),
	);
	
	public static function getTipsterTypeList() {
		return array(self::PT_F3, self::PT_T1, self::PT_T2, self::PT_T3);
	}
	
	public static function getEmployeeTypeList() {
		return array(self::PT_SUPERADMIN, self::PT_ADMIN, self::PT_ASSISTANT, self::PT_BROKER);
	}
}

?>